-
Notifications
You must be signed in to change notification settings - Fork 797
[SYCL] Sub-group load/store for raw pointers #3255
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/summary:run |
- remove unnecessary attributes for SPIR-V declaration and definitions; - fix SPIR-V enumeration values; - add tests; - generate assert if load/store is called for private pointer; - remove decoreded reference code; - use spir64-unknown-unknown-sycldevice target in LIT infra to use device side asserts; - update documentation.
- implement fallback for CUDA BE; - fix assert function name on Windows.
sycl/doc/extensions/SubGroupAlgorithms/SYCL_INTEL_sub_group_algorithms.asciidoc
Outdated
Show resolved
Hide resolved
sycl/doc/extensions/SubGroupAlgorithms/SYCL_INTEL_sub_group_algorithms.asciidoc
Outdated
Show resolved
Hide resolved
@intel/dpcpp-specification-reviewers, @againull could you please have a look? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please, provide description for this PR with high-level overview of the patch.
@vladimirlaz, please, fix LIT test failure. |
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks much better now. Thanks!
* upstream/sycl: Add ITT stubs and wrappers for SPIR-V devices (intel#3279) [SYCL] Add zero argument version of buffer::reinterpret() for SYCL 2020 (intel#3333) [SYCL] Restore old behavior of get() method (intel#3356) [Driver][SYCL][FPGA] Improve FPGA AOT when using Triple (intel#3330) [SYCL] Revert support for pinned_host_memory extension in Level-Zero backend. Make it a NOP (intel#3349) [SYCL] Remove redundant build options processing (intel#3342) [SYCL][NFC] Factor out GenXIntrinsics git repo tag. (intel#3351) [SYCL] Add coarse-grained debug aid for finding imbalance in Level-Zero alloc/free (intel#3334) [SYCL] Sub-group load/store for raw pointers (intel#3255) [SYCL] Fix more unused variables warnings (intel#3352) [BuildBot] Uplift CPU/FPGAEMU RT version for CI Process (intel#3338)
* [SYCL] Moved tests introduced in intel/llvm#3255 * [SYCL] Fix issues found in CI - fix target tripple used by default to spir64-unknown-unknown-sycldevice; - remove obsolet LIT parameters (target_triple, host_triple); - enable tests for CPU and ACC devices.
* [SYCL] Moved tests introduced in intel#3255 * [SYCL] Fix issues found in CI - fix target tripple used by default to spir64-unknown-unknown-sycldevice; - remove obsolet LIT parameters (target_triple, host_triple); - enable tests for CPU and ACC devices.
* [SYCL] Moved tests introduced in intel#3255 * [SYCL] Fix issues found in CI - fix target tripple used by default to spir64-unknown-unknown-sycldevice; - remove obsolet LIT parameters (target_triple, host_triple); - enable tests for CPU and ACC devices.
The source element type used in a GEP may differ from the actual type of the pointer operand (e.g., ptr i8 vs. ptr [N x T]). This mismatch can lead to incorrect address computations during translation to SPIR-V of GEP used in constexpr context, which requires that pointer types match the type of the object being accessed. This patch inserts an explicit bitcast to convert the GEP pointer operand to the expected type, derived from the GEP’s source element type, before emitting an PtrAccessChain. This ensures the resulting SPIR-V instruction has a correctly typed base pointer and produces valid indexing behavior. For example: Before this change, the following GEP was translated incorrectly: getelementptr(i8, ptr addrspace(1) @a_var, i64 2) Whereas this nearly equivalent GEP was handled correctly: getelementptr inbounds ([2 x i8], ptr @a_var, i64 0, i64 1) Previously, the first form was incorrectly interpreted as: getelementptr inbounds ([2 x i8], ptr @a_var, i64 0, i64 2) Original commit: KhronosGroup/SPIRV-LLVM-Translator@1be936678fd8bbe
Add sub-group load/store methods for raw pointers:
Also fixed target triple (spir64-unknown-unknown-sycldevice) used for SPIR-V compilation path in LIT tests. The previous one was not supported by device library.